<?php
include_once '../gerenciadores/AutoloadGerenciadores.php';


class RepositorioAvaliacaoInstrutores {
	private static $instancia;
	
	private function __construct() {
	}
	
	public static function getInstancia(){
		if(isset(self::$instancia)){
			$classe = __CLASS__;
			self::$instancia = new $classe;
		}
		return self::$instancia;
	}
	
	public static function adicionaAvalicao(AvaliacaoInstrutores $avaliacao){
		if(isset($avaliacao)){
			try{
				$sql = "INSERT INTO `tavaliacao`(`idpessoa`, `idturma`, `iddisciplina`,
					 `relacionamento`, `dominio`, `clareza`, `recursos`, `organizacao`,
					`metodologia`, `responsabilidade`, `avaliacao`, `observacao`, `idaluno`)
					 VALUES ('";
				$sql = $sql.$avaliacao->getInstrutor()->getIdPessoa()."','";
				$sql = $sql.$avaliacao->getTurma()->getIdTurma()."','";
				$sql = $sql.$avaliacao->getDisciplina()->getIdDisciplina()."','";
				$sql = $sql.$avaliacao->getRelacionamento()."','";
				$sql = $sql.$avaliacao->getDominio()."','";
				$sql = $sql.$avaliacao->getClareza()."','";
				$sql = $sql.$avaliacao->getRecursos()."','";
				$sql = $sql.$avaliacao->getOrganizacao()."','";
				$sql = $sql.$avaliacao->getMetodologia()."','";
				$sql = $sql.$avaliacao->getResponsabilidade()."','";
				$sql = $sql.$avaliacao->getAvaliacao()."','";
				$sql = $sql.$avaliacao->getObservacao()."','";
				$sql = $sql.$avaliacao->getAluno()->getIdPessoa();
				$sql = $sql."')";
				Conexao::executaSql($sql);
			}catch (AvaliacaoCadastraException $cadAvaliacao){
				echo $cadAvaliacao->getMessage();
			}
		}
	}
	
	public static function getTabelaAvaliacoes(Turma $turma){
		$sql = "SELECT p.cargo, p.instituicao, p.nome, t.turma,c.siglacurso, t.ano, i.instrutor, d.disciplina, d.cargahoraria, COUNT(idaluno) AS qtd_avaliacoes,
				AVG(a.relacionamento) as relacionamento , AVG(a.dominio) as dominio, AVG(a.clareza) as clareza, AVG(a.recursos) as recursos,
				AVG(a.organizacao) as organizacao, AVG(a.metodologia) as metodologia, AVG(a.responsabilidade) as responsabilidade, AVG(a.avaliacao) as avaliacao
				
		FROM tavaliacao a
		INNER JOIN tpessoa p ON (p.idpessoa = a.idpessoa)
		INNER JOIN tturma t ON (t.idturma = a.idturma)
		INNER JOIN tcursos c ON (c.idcurso = t.idcurso)
		INNER JOIN tdisciplina d ON (d.iddisciplina = a.iddisciplina)
		INNER JOIN tinstrutor i ON (i.idpessoa = p.idpessoa AND a.iddisciplina = i.iddisciplina AND t.idturma = i.idturma)
		WHERE a.idturma = '".$turma->getIdTurma()."'
		GROUP BY a.idpessoa, a.iddisciplina, a.idturma;";
		
		$nomeArquivo = "avaliacao_de_instrutores_".$turma;
		__autoload("Conexao");
		$tabela = Conexao::imprimePlanilha($sql,$nomeArquivo);
		
		return $tabela;
	}
	
	public static function getAvaliacaoInstrutor(Instrutor $instrutor, Disciplina $disciplina, Turma $turma){
		$sql = "SELECT * FROM `tavaliacao` WHERE idpessoa = '".$instrutor->getIdPessoa()."' AND idturma='".$turma->getIdTurma()."' AND iddisciplina='".$disciplina->getIdDisciplina()."';";
	
		$tabela = Conexao::tabelaSql($sql);
		
		$i=0;
		foreach ($tabela as $linha) {
			$avaliacao[$i] = new AvaliacaoInstrutores();
			$avaliacao[$i]->setAvaliacao($linha['avaliacao']);
			$avaliacao[$i]->setClareza($linha['clareza']);
			$avaliacao[$i]->setDisciplina($disciplina);
			$avaliacao[$i]->setDominio($linha['dominio']);
			$avaliacao[$i]->setInstrutor($instrutor);
			$avaliacao[$i]->setMetodologia($linha['metodologia']);
			$avaliacao[$i]->setObservacao($linha['observacao']);
			$avaliacao[$i]->setOrganizacao($linha['organizacao']);
			$avaliacao[$i]->setRecursos($linha['recursos']);
			$avaliacao[$i]->setRelacionamento($linha['relacionamento']);
			$avaliacao[$i]->setResponsabilidade($linha['responsabilidade']);
			$avaliacao[$i]->setTurma($turma);
			$i++;
		}
		__autoload("AvaliacaoCadastraException");	
		
		return $avaliacao;
		
	}
	
	
	public static function getTabelaGrafico(Pessoa $instrutor){
		$sql = "SELECT ROUND((AVG(relacionamento) + AVG(dominio) + AVG(clareza) + AVG(recursos) + AVG(organizacao) + avg(metodologia) + avg(responsabilidade) + AVG(avaliacao) )/8, 1) as soma
 				FROM `tavaliacao` left JOIN tturma ON (tturma.idturma = tavaliacao.idturma)  left JOIN tcursos ON (tcursos.idcurso=tturma.idcurso) WHERE idpessoa='".$instrutor->getIdPessoa()."'  GROUP BY idpessoa, tavaliacao.idturma;";
		$tabela = Conexao::tabelaSql($sql);
		
		$notas = array();
		foreach ($tabela as $linha){
			array_push($notas, $linha['soma'])  ;	
		}
		
		return $notas;
	}
}
?>